const cp = require('child_process')
// 此包ssh2需要下载
const ssh2 = require('ssh2')

// 执行tar.sh脚本获取输出流
let pro = cp.spawn("./tar.sh")
pro.stdout.on('data', function (data) {
    console.log('stdout: ' + data);
});
pro.stderr.on('data', function (data) {
    console.log('stderr: ' + data);
});
// pro.stdout.pipe(process.stdout)
pro.on('exit', () => {
    // 打包完成后上传
    // 上传
    console.log('压缩完成，准备上传...');
    connect()  // 压缩后上传，仅压缩可注释
})
let conn = new ssh2.Client();
// connect()
// 上传操作
function connect() {
    conn.on('ready', () => {
        conn.sftp((err, sftp) => {
            sftp.fastPut('./nanshan-ssr.tar.gz', '/home/qianduan/nanshan-ssr.tar.gz', {}, (err, result) => { // 上传完成后开始解压
                Shell(conn)
            })
        })
    }).connect({host: '192.168.10.232', port: '22', username: 'root', password: 'Govmade123...'})
}

// 解压部署操作
function Shell(conn) {
    conn.shell((err, stream) => {
        stream.end(`
             cd /home/qianduan
             echo "开始解压..."
             tar zxvf nanshan-ssr.tar.gz
             rm -rf nanshan-ssr.tar.gz
             echo "正在重启进程..."
             pm2 restart all
             exit
            `
        // 进入服务器暂存地址
        // 上传前先备份原始项目
        // 解压上传的压缩包
        // 移动解压后的文件到发布目录
        // 删除压缩包
        ).on('data', data => {
            console.log(data.toString())
        }).on('close', () => {
            console.log('部署完成');
            conn.end()
        })
    })
}
